package gpc

import (
	"os"
	"os/exec"
	"path/filepath"
)

var (
	selfDir  string
	selfFile string
)

func init() {
	file, err := exec.LookPath(os.Args[0])
	if err != nil {
		panic(err)
	}
	absPath, err := filepath.Abs(file)
	if err != nil {
		panic(err)
	}
	selfDir, selfFile = filepath.Split(absPath)
}

//获取当前可执行文件目录
func GetSelfFileDir() string {
	return selfDir
}

//获取当前可执行文件名
func GetSelfFileName() string {
	return selfFile
}

// IsExist 判断文件或者目录是否存在
func IsExist(p string) bool {
	_, err := os.Stat(p)
	return err == nil || os.IsExist(err)
}

// 从路径中获取文件基本名（即文件名不包括扩展名）
func BaseName(p string) string {
	lastDot := -1
	lastSlash := -1
	for i := len(p) - 1; i >= 0; i-- {
		if lastDot == -1 && p[i] == '.' {
			lastDot = i
		} else if p[i] == '\\' || p[i] == '/' {
			lastSlash = i
			break
		}
	}
	if lastDot == -1 {
		return p[lastSlash+1:]
	} else {
		return p[lastSlash+1 : lastDot]
	}
}
